{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 练习一、二"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "熟悉list,tuple,dict等数据类型的一些操作。\n",
    "1. 输出 9*9 乘法口诀表\n",
    "2. 有四个数字：1、2、3、4，能组成多少个互不相同且无重复数字的三位数？各是多少？\n",
    "3. 输入三个整数x,y,z，请把这三个数由小到大输出。\n",
    "4. 将一个一维列表(从0到25)转换成二维列表（5，5）。\n",
    "5. 导入math包，将一些数学函数如cos,sin,exp等作用到一个一维及二维列表上。\n",
    "6. 实现矩阵与数及矩阵与矩阵之间的加、减、乘的函数（三个函数），并进行测试。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 答案"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 方式一\n",
    "def tran1to2(list_a,n1,n2):\n",
    "    if len(list_a) < n1*n2:\n",
    "        print(\"input list length less than n1*n2!\") \n",
    "        return 0\n",
    "    tmpi =[]\n",
    "    for i in range(n1):\n",
    "        tmpj=[]\n",
    "        for j in range(n2):\n",
    "            tmpj.append(list_a[i*n2+j])\n",
    "        tmpi.append(tmpj)\n",
    "    return tmpi\n",
    "a = list(range(12))\n",
    "b = tran1to2(a,3,4)\n",
    "print(a)\n",
    "print(b)\n",
    "\n",
    "# 方式二\n",
    "n1=3\n",
    "n2=4\n",
    "c = [a[i*n2:(i+1)*n2] for i in range(n1)]\n",
    "print(c)\n",
    "\n",
    "import math\n",
    "a = list(range(12))\n",
    "b = [math.cos(i) for i in a]\n",
    "c = [math.exp(i) for i in a]\n",
    "print(b)\n",
    "print(c)\n",
    "a = tran1to2(a,3,4)\n",
    "b = tran1to2([math.cos(j) for i in a for j in i ],3,4)\n",
    "c = tran1to2([math.exp(j) for i in a for j in i],3,4)\n",
    "print(b)\n",
    "print(c)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 练习三"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. 读入二进制文件，文件类型为complex128，数据维度为(configurations,t)。第一个维度为统计变量维度，第二个维度为时间维度。\n",
    "2. 读入的文件，对统计变量维度进行jackknife处理。即 $$x^j(t) = (\\sum_{i\\ne j} x^i(t)) /(n-1) $$\n",
    "3. 利用得到的jackknife数据，计算每个时间t上的质量（时间可认为是周期性的） $$ m^j(t) = np.log(x^j(t-1)/x^j(t)) $$ \n",
    "4. 给出质量的统计平均值及误差。 jackknife 的误差公式 $$ m_{err} = \\sigma(m^j) * (n-1)^{1/2} $$  \n",
    "5. 画出质量带误差的图。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 答案"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 读入数据\n",
    "data = np.load(\"./two_point_function.npy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sum_data = np.sum(data,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 构建jackknife 样本\n",
    "n,nt = data.shape\n",
    "jdata = (np.sum(data,0) - data ) / (n - 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "m = np.log(jdata / np.roll(jdata,-1,1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "m_aver = np.average(m,0)\n",
    "m_error = np.std(m,0) * (n-1)**0.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.title(\"Effective Mass\")\n",
    "t_range = np.arange(1,12)\n",
    "plt.xlabel(\"$\\hat{t}$\")\n",
    "plt.ylabel(\"$M_{eff}$\")\n",
    "plt.errorbar(t_range,m_aver[t_range],m_error[t_range],fmt=\"bo\",label=\"data label\")\n",
    "plt.grid()\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "def generate_fake_data(masses=[0.3],error_mass=0.2,nconf=1000,nt=192):\n",
    "    fake_data = np.zeros((nconf,nt))\n",
    "    t = np.arange(nt)\n",
    "    for mass in masses:\n",
    "        fake_data = fake_data + np.exp( - mass * t)\n",
    "    \n",
    "    fake_data = fake_data + np.exp(- error_mass * t)[np.newaxis,:] * np.random.randn(1000,192)\n",
    "    return fake_data\n",
    "\n",
    "def jackknife(data,axis_=0):\n",
    "    data_j = (np.sum(data,axis=axis_) - data) / data.shape[axis_]\n",
    "    return data_j\n",
    "\n",
    "def effective_mass(data_j,t_axis_=1):\n",
    "    nconf,nt = data_j.shape\n",
    "    mass_j = np.log(np.roll(data_j,-1,t_axis_) / data_j)\n",
    "    aver_mass = np.average(mass_j,0)\n",
    "    error_mass = np.std(mass_j,0) * (nconf - 1) ** 0.5\n",
    "    return aver_mass,error_mass\n",
    "\n",
    "data = generate_fake_data()\n",
    "data_j = jackknife(data)\n",
    "aver_mass, error_mass = effective_mass(data_j) \n",
    "t = np.arange(10)\n",
    "plt.errorbar(t,aver_mass[t],error_mass[t])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 练习四"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 实现一阶及二阶导数的中心差分公式\n",
    "* 实现单区间的梯形积分、辛普森积分公式\n",
    "* 实现多区间的梯形积分、辛普森积分公式\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.interpolate import barycentric_interpolate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 差分\n",
    "h = 0.1\n",
    "x = np.arange(0,2,h)\n",
    "y = x**2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 一阶导数的中心差分\n",
    "n = len(x)\n",
    "yp=np.zeros((n))\n",
    "for i in range(1,n-1):\n",
    "    yp[i] = (y[i+1] - y[i-1]) / (2 * h)\n",
    "\n",
    "yp[0] = (y[1] - y[0])/h\n",
    "yp[n-1] = (y[n-1] - y[n-2]) / h \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x,y,\"ro\",x,yp,\"b*\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x188df33b250>]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 利用一阶导数计算二阶导数\n",
    "yp2 = np.zeros(n)\n",
    "yp2[1:-1] = (yp[2:] - yp[:-2]) / (2*h)\n",
    "yp2[0] = (yp[1] - yp[0]) / h\n",
    "yp2[-1] = (yp[-1] - yp[-2]) / h\n",
    "plt.plot(x,yp2,\"ko\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x188e09d0fa0>]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAS70lEQVR4nO3df6jdd53n8eerScpuY9Fdc63SNkmHLTitmNpeYp3K2C47knZGiuAfCaUDYrmMTEF3Rab6R2V2WVgQZNbZOtmgoSvTVhbaaJH+ZNeZqqW1NyX9ZVrJZOoaUkhsZ/pDZST63j/ON/R4veee7809uefm4/MBX+45nx/f8z5fvnnle77nnO9JVSFJatdZ0y5AknR6GfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0bG/RJ/lWSHyR5KslzSf5ykTFJ8uUkh5I8neTyob4dSV7o+m6Z9BOQJC2tzxH9vwD/vqq2AZcBO5JcuWDMtcDF3TIH/A1AknXAbV3/JcCuJJdMpnRJUh9jg74G3ujubuiWhd+yuh74ejf2MeBtSd4FbAcOVdXhqvol8I1urCRplazvM6g7Mt8P/Dvgtqp6fMGQ84GfDN0/0rUt1v7+EY8xx+DVABs3brzi3e9+d5/SJEnA/v37f1pVM4v19Qr6qvoVcFmStwH7krynqp4dGpLFpi3Rvthj7AH2AMzOztb8/Hyf0iRJQJIfj+pb1qduquqfgb8DdizoOgJcOHT/AuDoEu2SpFXS51M3M92RPEn+NfAfgOcXDLsX+NPu0zdXAq9W1UvAE8DFSS5KcjawsxsrSVolfU7dvAv4X915+rOA/11V307yZwBVtRu4D7gOOAT8HPh413ciyc3Ag8A6YG9VPTf5pyFJGiVr8TLFnqOXpOVJsr+qZhfr85uxktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaN/Y3Y5NcCHwdeCfwa2BPVf33BWM+C9wwtM7fB2aq6pUkLwKvA78CToz6qStJ0unR58fBTwCfqaonk5wL7E/ycFX98OSAqvoi8EWAJB8B/mNVvTK0jmuq6qeTLFyS1M/YUzdV9VJVPdndfh04CJy/xJRdwF2TKU+StFLLOkefZCvwPuDxEf3nADuAu4eaC3goyf4kc6dYpyTpFPU5dQNAkrcwCPBPV9VrI4Z9BPj+gtM2V1XV0STvAB5O8nxVPbLI+ueAOYDNmzf3fgKSpKX1OqJPsoFByN9RVfcsMXQnC07bVNXR7u8xYB+wfbGJVbWnqmaranZmZqZPWZKkHsYGfZIAXwMOVtWXlhj3VuBDwLeG2jZ2b+CSZCPwYeDZlRYtSeqvz6mbq4AbgWeSHOjaPg9sBqiq3V3bR4GHqupnQ3PPA/YN/q9gPXBnVT0wgbolST2NDfqq+h6QHuNuB25f0HYY2HaKtUmSJsBvxkpS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNGxv0SS5M8p0kB5M8l+RTi4y5OsmrSQ50y61DfTuSvJDkUJJbJv0EJElLG/vj4MAJ4DNV9WSSc4H9SR6uqh8uGPfdqvqT4YYk64DbgD8CjgBPJLl3kbmSpNNk7BF9Vb1UVU92t18HDgLn91z/duBQVR2uql8C3wCuP9ViJUnLt6xz9Em2Au8DHl+k+wNJnkpyf5JLu7bzgZ8MjTnCiP8kkswlmU8yf/z48eWUJUlaQu+gT/IW4G7g01X12oLuJ4EtVbUN+GvgmyenLbKqWmz9VbWnqmaranZmZqZvWZKkMXoFfZINDEL+jqq6Z2F/Vb1WVW90t+8DNiTZxOAI/sKhoRcAR1dctSSptz6fugnwNeBgVX1pxJh3duNIsr1b78vAE8DFSS5KcjawE7h3UsVLksbr86mbq4AbgWeSHOjaPg9sBqiq3cDHgE8mOQH8AthZVQWcSHIz8CCwDthbVc9N9ilIkpaSQR6vLbOzszU/Pz/tMiTpjJFkf1XNLtbnN2MlqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDWuz4+DX5jkO0kOJnkuyacWGXNDkqe75dEk24b6XkzyTJIDSfx9QElaZX1+HPwE8JmqejLJucD+JA9X1Q+Hxvwj8KGq+qck1wJ7gPcP9V9TVT+dXNmSpL7GBn1VvQS81N1+PclB4Hzgh0NjHh2a8hhwwYTrlCSdomWdo0+yFXgf8PgSwz4B3D90v4CHkuxPMrfEuueSzCeZP378+HLKkiQtoc+pGwCSvAW4G/h0Vb02Ysw1DIL+g0PNV1XV0STvAB5O8nxVPbJwblXtYXDKh9nZ2VrGc5AkLaHXEX2SDQxC/o6qumfEmPcCXwWur6qXT7ZX1dHu7zFgH7B9pUVLkvrr86mbAF8DDlbVl0aM2QzcA9xYVT8aat/YvYFLko3Ah4FnJ1G4JKmfPqdurgJuBJ5JcqBr+zywGaCqdgO3Am8HvjL4f4ETVTULnAfs69rWA3dW1QOTfAKSpKX1+dTN94CMGXMTcNMi7YeBbb89Q5K0WvxmrCQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxvX5cfALk3wnycEkzyX51CJjkuTLSQ4leTrJ5UN9O5K80PXdMukncNIdd8DWrXDWWYO/d9zhfOc73/m/G/PHqqolF+BdwOXd7XOBHwGXLBhzHXA/g9+WvRJ4vGtfB/wD8HvA2cBTC+cutlxxxRW1HH/7t1XnnFMFby7nnDNod77zne/8luefBMzXqBwf1TFyAnwL+KMFbf8T2DV0/4XuP4gPAA8OtX8O+Ny4x1hu0G/Z8psb6eSyZYvzne9857c9/6Slgj6D/n6SbAUeAd5TVa8NtX8b+G9V9b3u/v8B/gLYCuyoqpu69huB91fVzYusew6YA9i8efMVP/7xj3vXddZZg03z2+uEX//a+c53vvPbnf/m+OyvqtlFH2MZK3kLcDfw6eGQP9m9yJRaov23G6v2VNVsVc3OzMz0LQuAzZuX1+585zvf+a3M72XUof7wAmwAHgT+04j+qZ66mfY5Muc73/nOn9b8k1jJOXoGR+VfB/5qiTF/zG++GfuDrn09cBi4iDffjL103GMuN+hPbqwtW6qSwd/lbiTnO9/5zj9T51ctHfRjz9En+SDwXeAZ4OQZo88Dm7tXBLuTBPgfwA7g58DHq2q+m38d8FcMPoGzt6r+67hXGbOzszU/Pz9umCSps9Q5+vXjJtfgDdbFzrUPjyngz0f03Qfc16NOSdJp4DdjJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1buxPCSbZC/wJcKyq3rNI/2eBG4bW9/vATFW9kuRF4HXgV8CJUb9nKEk6ffoc0d/O4Ee/F1VVX6yqy6rqMuBzwN9X1StDQ67p+g15SZqCsUFfVY8Ar4wb19kF3LWiiiRJEzWxc/RJzmFw5H/3UHMBDyXZn2RuzPy5JPNJ5o8fPz6psiTpd94k34z9CPD9Badtrqqqy4FrgT9P8oejJlfVnqqararZmZmZCZYlSb/bJhn0O1lw2qaqjnZ/jwH7gO0TfDxJUg8TCfokbwU+BHxrqG1jknNP3gY+DDw7iceTJPXX5+OVdwFXA5uSHAG+AGwAqKrd3bCPAg9V1c+Gpp4H7Ety8nHurKoHJle6JKmPsUFfVbt6jLmdwccwh9sOA9tOtTBJ0mT4zVhJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0bG/RJ9iY5lmTRH/ZOcnWSV5Mc6JZbh/p2JHkhyaEkt0yycElSP32O6G8HdowZ892quqxb/jNAknXAbcC1wCXAriSXrKRYSdLyjQ36qnoEeOUU1r0dOFRVh6vql8A3gOtPYT2SpBWY1Dn6DyR5Ksn9SS7t2s4HfjI05kjXtqgkc0nmk8wfP358QmVJkiYR9E8CW6pqG/DXwDe79iwytkatpKr2VNVsVc3OzMxMoCxJEkwg6Kvqtap6o7t9H7AhySYGR/AXDg29ADi60seTJC3PioM+yTuTpLu9vVvny8ATwMVJLkpyNrATuHeljydJWp714wYkuQu4GtiU5AjwBWADQFXtBj4GfDLJCeAXwM6qKuBEkpuBB4F1wN6qeu60PAtJ0kgZZPLaMjs7W/Pz89MuQ5LOGEn2V9XsYn1+M1aSGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuPGBn2SvUmOJXl2RP8NSZ7ulkeTbBvqezHJM0kOJPG3ASVpCvoc0d8O7Fii/x+BD1XVe4H/AuxZ0H9NVV026rcMJUmn1/pxA6rqkSRbl+h/dOjuY8AFE6hLkjQhkz5H/wng/qH7BTyUZH+SuQk/liSph7FH9H0luYZB0H9wqPmqqjqa5B3Aw0mer6pHRsyfA+YANm/ePKmyJOl33kSO6JO8F/gqcH1VvXyyvaqOdn+PAfuA7aPWUVV7qmq2qmZnZmYmUZYkiQkEfZLNwD3AjVX1o6H2jUnOPXkb+DCw6Cd3JEmnz9hTN0nuAq4GNiU5AnwB2ABQVbuBW4G3A19JAnCi+4TNecC+rm09cGdVPXAanoMkaQl9PnWza0z/TcBNi7QfBrb99gxJ0mrym7GS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS48YGfZK9SY4leXZEf5J8OcmhJE8nuXyob0eSF7q+WyZZuCSpnz5H9LcDO5bovxa4uFvmgL8BSLIOuK3rvwTYleSSlRQrSVq+sUFfVY8Arywx5Hrg6zXwGPC2JO8CtgOHqupwVf0S+EY3VpK0itZPYB3nAz8Zun+ka1us/f2jVpJkjsErAoA3krxwivVsAn56inNXg/WtjPWtjPWtzFqub8uojkkEfRZpqyXaF1VVe4A9Ky4mma+q2ZWu53SxvpWxvpWxvpVZ6/WNMomgPwJcOHT/AuAocPaIdknSKprExyvvBf60+/TNlcCrVfUS8ARwcZKLkpwN7OzGSpJW0dgj+iR3AVcDm5IcAb4AbACoqt3AfcB1wCHg58DHu74TSW4GHgTWAXur6rnT8BwWWvHpn9PM+lbG+lbG+lZmrde3qFSNPG0uSWqA34yVpMYZ9JLUuDMm6MddTmHal2LoUd8NXV1PJ3k0ybahvheTPJPkQJL5KdV3dZJXuxoOJLm179xVqu+zQ7U9m+RXSf5t17ca229NXwqkR33T3v/G1Tft/W9cfVPd/1asqtb8wuDN3H8Afo/BxzafAi5ZMOY64H4Gn9+/Eni879xVqu8PgH/T3b72ZH3d/ReBTVPeflcD3z6VuatR34LxHwH+72ptv+4x/hC4HHh2RP/U9r+e9U1t/+tZ39T2vz71TXv/W+lyphzR97mcwjQvxTD2Marq0ar6p+7uYwy+V7BaVrIN1sT2W2AXcNeEa1hSrfFLgYyrb8r7X5/tN8qa2H4LrPr+t1JnStCPusxCnzF95q5GfcM+weDo76QCHkqyP4NLQUxa3/o+kOSpJPcnuXSZc1ejPpKcw+Aie3cPNZ/u7dfHNPe/5Vrt/a+vae1/va3h/W9Jk/hm7GroczmFiVyK4RT1fowk1zD4h/bBoearqupokncADyd5vjvCWM36ngS2VNUbSa4DvsngiqRravsxeNn8/aoaPvo63duvj2nuf71Naf/rY5r733Ks1f1vSWfKEf2oyyz0GdNn7mrUR5L3Al8Frq+ql0+2V9XR7u8xYB+Dl6urWl9VvVZVb3S37wM2JNnUZ+5q1DdkJwteNq/C9utjmvtfL1Pc/8aa8v63HGt1/1vatN8k6LMweOVxGLiIN9+QuXTBmD/mN98M+0HfuatU32YG3x7+gwXtG4Fzh24/CuyYQn3v5M0v0G0H/l+3LdfE9uvGvZXBedSNq7n9hh5rK6PfTJza/tezvqntfz3rm9r+16e+tbD/rWQ5I07d1IjLKST5s65/qpdi6FnfrcDbga8kAThRg6vgnQfs69rWA3dW1QNTqO9jwCeTnAB+Aeyswd67VrYfwEeBh6rqZ0PTT/v2g7V/KZAe9U1t/+tZ39T2v571wRT3v5XyEgiS1Lgz5Ry9JOkUGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcf8f+DDZd9KR9jwAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 二阶导数的中心差分，采用插值获取边界点的值。\n",
    "yp2[1:-1] = (y[2:] + y[:-2] -2 * y[1:-1]) / h**2\n",
    "yp2[0] = barycentric_interpolate(x[1:3],yp2[1:3],x[0])\n",
    "yp2[-1] = barycentric_interpolate(x[-3:-1],yp2[-3:-1],x[-1])\n",
    "plt.ylim(1,3)\n",
    "plt.plot(x,yp2,\"bo\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 积分\n",
    "x = np.linspace(0,2,100+1)\n",
    "y = x**2\n",
    "h = x[1] - x[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.6668000000000003\n",
      "0.00013333333333376274\n"
     ]
    }
   ],
   "source": [
    "# 梯形积分\n",
    "intf = (( y[0] + y[-1])/2 + np.sum(y[1:-1]) ) * h\n",
    "print(intf)\n",
    "print(intf - 8/3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.666666666666667\n",
      "4.440892098500626e-16\n"
     ]
    }
   ],
   "source": [
    "# 辛普森积分\n",
    "intf2 = ((y[0] - y[-1])/3 + np.sum(y[1::2]) * 4/3 + np.sum(y[2::2]) * 2/3)*h \n",
    "print(intf2)\n",
    "\n",
    "print(intf2-8/3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def qtrin(f, a, b, n, *args):\n",
    "    x = np.linspace(a, b, n+1)\n",
    "    h = x[1] - x[0]\n",
    "    y = f(x, *args)\n",
    "    intf = (np.sum(y) - (y[0] + y[-1])/2) * h\n",
    "    return intf\n",
    "\n",
    "\n",
    "def qsimn(f, a, b, n, *args):\n",
    "    x = np.linspace(a, b, n+1)\n",
    "    h = x[1] - x[0]\n",
    "    y = f(x, *args)\n",
    "    intf = ((y[0] - y[-1])/3 + np.sum(y[1::2]) * 4/3 + np.sum(y[2::2]) * 2/3)*h\n",
    "    return intf\n",
    "\n",
    "\n",
    "def iter_intg(f, a, b, *args, eps=10**(-10), method=\"tri\"):\n",
    "    JMAX = 20\n",
    "    n = 1\n",
    "    for it in range(JMAX):\n",
    "        n = n*2\n",
    "        if method == \"tri\":\n",
    "            s = qtrin(f, a, b, n, *args)\n",
    "        elif method == \"sim\":\n",
    "            s = qsimn(f, a, b, n, *args)\n",
    "        if it >= 3 and np.abs(os - s) < eps:\n",
    "            print(f\"convergence after {it} iters!\")\n",
    "            return s\n",
    "        os = s\n",
    "    print(f\"can't convergence after {JMAX} iters!\")\n",
    "    return s\n",
    "\n",
    "\n",
    "def romberg(f, a, b, *args, eps=10**(-10), method=\"tri\"):\n",
    "    JMAX = 20\n",
    "    n = 1\n",
    "    ydata = []\n",
    "    xdata = []\n",
    "    ost = 0\n",
    "    for it in range(JMAX):\n",
    "        n = n*2\n",
    "        if method == \"tri\":\n",
    "            s = qtrin(f, a, b, n, *args)\n",
    "        elif method == \"sim\":\n",
    "            s = qsimn(f, a, b, n, *args)\n",
    "        ydata.append(s)\n",
    "        xdata.append((b-a)/n)\n",
    "        if it >= 3:\n",
    "            intp_s = neville1(np.array(xdata)**2, np.array(\n",
    "                ydata), xp=np.array([0]))\n",
    "            if abs(intp_s[0]-ost) < eps:\n",
    "                print(f\"convergence after {it} iters!\")\n",
    "                return intp_s\n",
    "            ost = intp_s[0]\n",
    "    print(f\"can't convergence after {JMAX} iters!\")\n",
    "    return intp_s[0]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def qsimp(f,a,b,eps=1*10**-10):\n",
    "    JMAX=20\n",
    "    s,st,ost,os=0.0,0.0,0.0,0.0\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 练习五"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. 尝试自己完成Neville插值算法。\n",
    "2. 可以利用该算法计算连续极限外推。做连续极限外推在计算物理中非常常见。例如我们可能在较粗的晶格上做模拟，可以得到不同晶格长度上的结果。最终我们需要将该结果外推到更细的晶格上去（凝聚态物理），甚至到晶格为0的位置（连续场论）。而最简单的例子，如我们上课之前讲解的利用正多边形计算 $\\pi$。 试利用这些数据 $ \\pi_{8}=3.061467,\t\\pi_{16}=3.121445 \\pi_{32}=3.136548,\t\\pi_{64}=3.140331 $ 外推给出 $\\pi$的值 。\n",
    "3. 熟悉使用 `scipy.interpolate ` 包中的函数，如 `interp1d, splrep, `  \n",
    "~~4. 完成样条插值的程序。注意 矩阵求解的部分可以调用numpy的linalg 的包来求解。~~"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 1 Neville 插值\n",
    "def neville1(xdata:np.ndarray,ydata:np.ndarray,xp:np.ndarray or float,Debug:bool=False):\n",
    "    \"\"\"一维Neville插值。\n",
    "\n",
    "    \"\"\"\n",
    "    n = len(xdata)\n",
    "    m = len(xp) \n",
    "    tmp = np.repeat(ydata,m).reshape(n,m)\n",
    "    deltax = xp.reshape(1,-1) - xdata.reshape(-1,1)\n",
    "    for it in range(n-1):\n",
    "        tmp[:n-it-1,:] = (tmp[1:n-it,:]*deltax[:n-it-1,:] \n",
    "        - tmp[:n-it-1,:]*deltax[it+1:,:]) \\\n",
    "            /(xdata[it+1:]-xdata[:n-it-1]).reshape(-1,1)\n",
    "        if Debug:\n",
    "            print(\"it = \",it,\"; tmp = \",tmp[:n-it-1,:]) \n",
    "    return tmp[0,:]\n",
    "\n",
    "def neville2(xdata:np.ndarray,ydata:np.ndarray,xp:float or list,Debug:bool=False):\n",
    "    n = len(xdata)\n",
    "    t = np.zeros((n,n),dtype=ydata.dtype)\n",
    "    t[:,0] = ydata[:]\n",
    "    if type(xp) is float:\n",
    "        xp = [xp]\n",
    "\n",
    "    yp = []\n",
    "    for i in range(len(xp)):\n",
    "        for j in range(1,n):\n",
    "            for k in range(1,j+1):\n",
    "                t[j,k] = t[j,k-1] + (t[j,k-1] - t[j-1,k-1]) / ((xp[i] - xdata[j-k]) / (xp[i] - xdata[j])- 1) \n",
    "        yp.append(t[-1,-1])\n",
    "    return np.array(yp)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[3.1412745  3.14157985 3.14158376] False\n",
      "[3.1412745  3.14157985 3.14158376] False\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([3.1412745 , 3.14157985, 3.14158376])"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "k = np.array([1/8, 1/16, 1/32, 1/64])\n",
    "pi_k = np.array([3.061467, 3.121445, 3.136548, 3.140331])\n",
    "xp = np.array([1/128,1/1024,0])\n",
    "print(neville1(k,pi_k,xp),False)\n",
    "print(neville2(k,pi_k,xp),False)\n",
    "barycentric_interpolate(k,pi_k,xp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 4 scipy.interpolate 包中一些函数的用法\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy import interpolate\n",
    "from scipy.interpolate import interp1d # 线性插值或样条插值\n",
    "from scipy.interpolate import barycentric_interpolate # 多项式插值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0, 10, num=11, endpoint=True)\n",
    "y = np.cos(-x**2/9.0)\n",
    "f = interp1d(x, y)\n",
    "f2 = interp1d(x, y, kind='cubic')\n",
    "xnew = np.linspace(0, 10, num=41, endpoint=True)\n",
    "plt.plot(x, y, 'o', xnew, f(xnew), '-', xnew, f2(xnew), '--')\n",
    "plt.legend(['data', 'linear', 'cubic'], loc='best')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [],
   "source": [
    "#1. 一维样条插值\n",
    "x = np.arange(0, 2*np.pi+np.pi/4, 2*np.pi/8)\n",
    "y = np.sin(x)\n",
    "tck = interpolate.splrep(x, y, s=0)\n",
    "xnew = np.arange(0, 2*np.pi, np.pi/50)\n",
    "ynew = interpolate.splev(xnew, tck, der=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "plt.plot(x, y, 'x', xnew, ynew, xnew, np.sin(xnew), x, y, 'b')\n",
    "plt.legend(['Linear', 'Cubic Spline', 'True'])\n",
    "plt.axis([-0.05, 6.33, -1.05, 1.05])\n",
    "plt.title('Cubic-spline interpolation')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 2维样条插值\n",
    "x_edges, y_edges = np.mgrid[-1:1:21j, -1:1:21j]\n",
    "x = x_edges[:-1, :-1] + np.diff(x_edges[:2, 0])[0] / 2.\n",
    "y = y_edges[:-1, :-1] + np.diff(y_edges[0, :2])[0] / 2.\n",
    "z = (x+y) * np.exp(-6.0*(x*x+y*y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.figure()\n",
    "lims = dict(cmap='RdBu_r', vmin=-0.25, vmax=0.25)\n",
    "plt.pcolormesh(x_edges, y_edges, z, shading='flat', **lims)\n",
    "plt.colorbar()\n",
    "plt.title(\"Sparsely sampled function.\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 练习六"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 实现一维函数求根的程序（二分法，牛顿法及割线法）。并求解$e^x ln(x) - x^2 = 0 $ 在区间[1,2]内的根。\n",
    "* 实现一维函数求极值的程序，并计算$e^x - x^3 + x^2$的最小值。\n",
    "* 实现共轭梯度法,并求函数$f(x,y)=(y e^x -3)^2 + (y e^{2 x} - 5)^2$的极值点。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import math\n",
    "\n",
    "\n",
    "def bisection(f, a, b, delta=10**(-7), max=20):\n",
    "    c = (a+b)/2\n",
    "    iters = 0\n",
    "    fc = f(c)\n",
    "    fa = f(a)\n",
    "    fb = f(b)\n",
    "\n",
    "    while abs(fc) > delta and iters < max:\n",
    "        if fc * fa < 0:\n",
    "            fb = fc\n",
    "            b = c\n",
    "\n",
    "        else:\n",
    "            fa = fc\n",
    "            a = c\n",
    "        \n",
    "        c = (a + b) / 2\n",
    "        fc = f(c)\n",
    "        iters = iters + 1\n",
    "        #print(\"iter %i, f(x) = %f\"%(iters,fc))\n",
    "        if iters == max:\n",
    "            print(\"get the max iters!\")\n",
    "    print(iters, c)\n",
    "    return c\n",
    "\n",
    "\n",
    "def secant(f, x0, x1, delta=10**(-7), max=20):\n",
    "    f0 = f(x0)\n",
    "    f1 = f(x1)\n",
    "    iters = 0\n",
    "    while abs(f1) > delta and iters < max:\n",
    "        x2 = x1 - (x1 - x0) / (f1 - f0) * f1\n",
    "        f0 = f1\n",
    "        f1 = f(x2)\n",
    "        x0 = x1\n",
    "        x1 = x2\n",
    "        iters = iters + 1\n",
    "        if iters == max:\n",
    "            print(\"get the max iters!\")\n",
    "    print(iters, x1)\n",
    "    return x1\n",
    "\n",
    "\n",
    "def newton(f, df, x0, delta=10**(-7), max=20):\n",
    "    f0 = f(x0)\n",
    "    iters = 0\n",
    "    while abs(f0) > delta and iters < max:\n",
    "        x0 = x0 - f0 / df(x0)\n",
    "        f0 = f(x0)\n",
    "        iters = iters + 1\n",
    "        if iters == max:\n",
    "            print(\"get the max iters!\")\n",
    "    print(iters, x0)\n",
    "    return x0\n",
    "\n",
    "\n",
    "def conj_gradient(f, df, ddf, x0, delta=10**(-3), max=40):\n",
    "    xk = x0\n",
    "    hk = -df(xk)\n",
    "    pk = hk\n",
    "    absh = 1\n",
    "    iters = 0\n",
    "    while absh > delta and iters < max:\n",
    "        Ak = ddf(xk)\n",
    "        alpha = np.dot(hk, hk) / np.einsum(\"i,ij,j\", pk, Ak, pk)\n",
    "        xn = xk + alpha * pk\n",
    "        hn = hk - alpha * np.dot(Ak, pk)\n",
    "        absh = np.dot(hn, hn)\n",
    "        beta = np.dot(hn, hn) / np.dot(hk, hk)\n",
    "        pn = hn + beta * pk\n",
    "\n",
    "        pk = pn\n",
    "        xk = xn\n",
    "        hk = hn\n",
    "        iters = iters+1\n",
    "        if iters == max:\n",
    "            print(\"can't convergence after max iters!\")\n",
    "    print(iters, xn)\n",
    "    return xn\n",
    "\n",
    "\n",
    "def f1(x):\n",
    "    return math.exp(x) * math.log(x) - x*x\n",
    "\n",
    "\n",
    "def df1(x):\n",
    "    return math.exp(x)*math.log(x)-2*x + math.exp(x) / x\n",
    "\n",
    "\n",
    "def f2(x):\n",
    "    return (x[1]*np.exp(x[0]) - 3)**2 \\\n",
    "        + (x[1]*np.exp(2*x[0]) - 5)**2\n",
    "\n",
    "\n",
    "def df2(x):\n",
    "    dfx = 2 * (x[1]*np.exp(x[0]) - 3) * (x[1]*np.exp(x[0])) + \\\n",
    "        2 * (x[1]*np.exp(2*x[0]) - 5) * (2*x[1] * np.exp(2*x[0]))\n",
    "    dfy = 2 * (x[1]*np.exp(x[0]) - 3) * np.exp(x[0]) + \\\n",
    "        2 * (x[1]*np.exp(2*x[0]) - 5) * np.exp(2*x[0])\n",
    "    return np.array([dfx,dfy])\n",
    "\n",
    "def ddf2(x):\n",
    "    pass\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "22 1.6946009397506714\n",
      "8 1.6946009205023704\n",
      "4 1.6946009205185735\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "1.6946009205185735"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bisection(f1,1,2,max=30)\n",
    "secant(f1,1.1,1.2,max=30)\n",
    "newton(f1,df1,1.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 练习七"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 实现高斯消元法。\n",
    "* 求解线性方程组$$ A = [[1,2,3],[22,32,42],[55,66,100]], b = [1,2,3], \\\\ A\\cdot x = b$$\n",
    "* 调用QR分解算法，实现矩阵对角化。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "def gauss(A,b):\n",
    "    n = len(A)\n",
    "\n",
    "    for iter in range(n-1):\n",
    "        max_idx = iter + \\\n",
    "            np.argmax(np.abs(A[iter:,iter]))\n",
    "        \n",
    "        #选主元，交换主元行\n",
    "        if iter != max_idx:\n",
    "            tmp = A[max_idx,:]\n",
    "            A[max_idx,:] = A[iter,:]\n",
    "            A[iter,:] = tmp\n",
    "\n",
    "            tmp = b[max_idx]\n",
    "            b[max_idx] = b[iter]\n",
    "            b[iter] = tmp \n",
    "\n",
    "        if abs(A[iter,iter]) <= 10**(-15):\n",
    "            print(\"矩阵奇异\")\n",
    "            return 0\n",
    "\n",
    "        #消元\n",
    "        #方式一\n",
    "        #for i in range(iter,n):\n",
    "        #    A[i,:] = A[i,:] - \\\n",
    "        #        A[iter,:] * (A[i,iter] / A[iter,iter])\n",
    "        factor = (A[iter+1:,iter]/A[iter,iter])\n",
    "        A[iter+1:,iter] = 0\n",
    "        A[iter+1:,iter+1:] = A[iter+1:,iter+1:] - \\\n",
    "         np.outer(factor, A[iter,iter+1:])\n",
    "        # a(i+1:,i+1:) = a(i+1:,i+1:) - a(i,i+1:)*(a(i+1:,i)/a(i,i))\n",
    "        \n",
    "        b[iter+1:] = b[iter+1:] - b[iter] * factor \n",
    "\n",
    "\n",
    "    x = np.zeros(n)\n",
    "    x[n-1] = b[n-1] / A[n-1,n-1]\n",
    "    for i in range(n-2,-1,-1):\n",
    "        x[i] = 1 / A[i,i] * (b[i] \n",
    "        -np.sum(A[i,i+1:]*x[i+1:]))\n",
    "    return x"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 练习八"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 考虑经典粒子在分别在如下两种势场下的非线性震荡\n",
    "$$\n",
    "\\begin{aligned} V(x) & \\simeq \\frac{1}{2} k x^2\\left(1-\\frac{2}{3} \\alpha x\\right), \\\\ \\Rightarrow \\quad F_k(x) & =-\\frac{d V(x)}{d x}=-k x(1-\\alpha x)=m \\frac{d^2 x}{d t^2},\\end{aligned}\n",
    "$$\n",
    "$$\n",
    "V(x)=\\frac{1}{p} k x^p, \\quad(p\\ even ).\n",
    "$$\n",
    "验证非简谐振动是非同时的，即不同的初始条件（振幅）导致不同的周期\n",
    "* 加上如下几种摩擦力的情形：\n",
    "$$\n",
    "F_f^{(\\text {static })} \\leq-\\mu_s N, \\quad F_f^{(\\text {kinetic })}=-\\mu_k N \\frac{v}{|v|}, \\quad F_f^{(\\text {viscous })}=-b v\n",
    "$$\n",
    "这里，N是所考虑的物体上的法向力，μ和b是参数，v是速度。这个静摩擦模型适用于静止的物体，而动摩擦模型则适用于在干燥表面上滑动的物体。如果表面是润滑的，或者物体在粘性介质中移动，那么与速度成比例的摩擦力是更好的模型。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "试计算\n",
    "$$\n",
    "y^{\\prime \\prime} = -9.8 - 0.5 * y^{\\prime} \n",
    "$$\n",
    "方程可化为\n",
    "$$\n",
    "y^{\\prime} = z \\\\\n",
    "z^\\prime = -9.8 - 0.5 * z \n",
    "$$\n",
    "写成迭代的形式\n",
    "$$\n",
    "y_{n+1} - y_{n} = z_{n} * h \\\\\n",
    "z_{n+1} - z_{n} = (-9.8 - 0.5 * z_{n})*h\n",
    "$$\n",
    "当已知$y_{0},z_{0}$ 即可递推出后面时刻的结果。在我们程序中将$y$看作$y[0]$,$z$看作$y[1]$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.integrate import solve_ivp "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def f(x,y):\n",
    "    if y[0]<0:\n",
    "        y[1] = - y[1]\n",
    "    return np.array([y[1], -9.8 - 0.5 * y[1]])\n",
    "def f2(x,y):\n",
    "    return np.array([y[1],y[2],4])\n",
    "def euler(x,y,f,h):\n",
    "    return y + f(x,y) * h\n",
    "def ode(y0=[100,0],f=f,h=0.1,nx=100,method=euler,show=True):\n",
    "    y0 = np.array(y0)\n",
    "    solvey = [y0]\n",
    "    for it in range(1,nx):\n",
    "        y1 = method(it*h,y0,f,h)\n",
    "        solvey.append(y1)\n",
    "        y0 = y1\n",
    "    solvey = np.array(solvey)\n",
    "    if show:\n",
    "        for i in range(solvey.shape[1]):\n",
    "            plt.plot(np.arange(nx)*h, solvey[:,i],label=\"$y^{(%i)}$\"%i)\n",
    "        plt.legend()\n",
    "        plt.show()\n",
    "    return solvey\n",
    "\n",
    "sol = ode(nx=300)\n",
    "sol = ode(y0=np.array([1,0,0]),f=f2)\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "t= np.arange(0,30,0.1)\n",
    "sol2 = solve_ivp(f,(0,30),[100,0],dense_output=True)\n",
    "for i in range(sol2.y.shape[0]):\n",
    "    plt.plot(t, sol2.sol(t)[i,:],label=\"$y^{(%i)}$\"%i)\n",
    "plt.legend()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(975,)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sol2.sol.ts.s"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 练习九"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 计算数值求解一维谐振子系统(自然单位制)的一些本征值和本征函数\n",
    "$$\n",
    "\\left(-\\frac{\\mathrm{d}^2}{\\mathrm{~d} x^2}+\\frac{1}{2} x^2\\right) \\psi(x)=E \\psi(x)\n",
    "$$\n",
    "* 氢原子的径向方程(自然单位制)可写为\n",
    "$$\n",
    "\\chi_l^{\\prime \\prime}+\\left[2 E+\\frac{2}{r}-\\frac{l(l+1)}{r^2}\\right] \\chi_l=0\n",
    "$$\n",
    "试用打靶法求解本征值及本征矢量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from scipy.integrate import solve_ivp\n",
    "from scipy.integrate import solve_bvp\n",
    "from scipy.optimize import root_scalar\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "def f1(x,y,p):\n",
    "    return np.array([y[1],(1/2 * x**2 - p)*y[0]])\n",
    "\n",
    "def f2(x,y,k):\n",
    "    return np.array([y[1],-k**2 * y[0]])\n",
    "\n",
    "def ode_bvp(f,bc,x,p0):\n",
    "    def obs_f(p,f,bc,x):\n",
    "        sol = solve_ivp(f,t_span=(x[0],x[-1]),y0=bc[:,0],args=(p,),dense_output=True)\n",
    "        y = sol.sol(x)\n",
    "        return y[0,-1]- bc[0,1]\n",
    "    sol_p = root_scalar(obs_f,args=(f,bc,x),x0=p0,x1=p0+0.1)\n",
    "    print(sol_p)\n",
    "    sol = solve_ivp(f,t_span=(x[0],x[-1]),y0=bc[:,0],args=(sol_p.root,),dense_output=True)\n",
    "    return sol\n",
    "\n",
    "def show_sol(x,sol):\n",
    "    for i in range(1):\n",
    "        plt.plot(x, sol.sol(x)[i,:],label=\"$y^{(%i)}$\"%i)\n",
    "    plt.legend()\n",
    "    plt.show()\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAwrElEQVR4nO3deXxU1f3/8dcnO4EkEAiBLJBAEkLYIQKKogKyqIi1akWt1toCZXerS1tb7aKt+4LyRRRLXXDDiorigqgsImERCBAIYZuEJRBIIPtyfn9M9JfGYG6SSe7M5PN8PPJ4ZOaeO/O+Sj45OXPuOWKMQSmllPfysTuAUkqp5qWFXimlvJwWeqWU8nJa6JVSystpoVdKKS/nZ3eAunTq1MnExcXZHUMppTzGxo0bjxtjIuo65paFPi4ujrS0NLtjKKWUxxCRA2c7pkM3Sinl5bTQK6WUl9NCr5RSXs4tx+iVUsoVysvLcTgclJSU2B3FZYKCgoiJicHf39/yOZYKvYiMB54CfIGFxpiHax1PBhYBg4E/GGMerXGsPbAQ6AsY4NfGmHWWEyqlVCM5HA5CQkKIi4tDROyO02TGGE6cOIHD4SA+Pt7yefUO3YiILzAPmACkAJNFJKVWszxgNvAoP/YU8LExJhkYAOy0nE4ppZqgpKSEjh07ekWRBxAROnbs2OC/UKyM0Q8FMo0xWcaYMmAJMKlmA2PMMWPMBqC8VqhQYCTwYnW7MmPMqQYlVEqpJvCWIv+9xlyPlaGbaOBQjccOYJjF1+8B5AKLRGQAsBGYY4wprN1QRKYAUwC6detm8eWVci1jDHmFZRw6WcyR/GLyi8vJLy7nTGklVC/pLSKEBPkR2saf9m38iWrfhtgOwYQFWx8zVaolWSn0df36sLqIvR/OcftZxpj1IvIUcA/wpx+9oDELgAUAqampuki+anbGGHYfPcPGAydJz8knPaeAPUdPU1hWWWf77ztSZ9vCISTIj16RIfSJCqVPdBip3TsQ36mt1/UoleexUugdQGyNxzFAjsXXdwAOY8z66sdv4yz0StniVFEZn+08xqqMY3yTdYLjZ8oAZ5HuExXKNamxdAsPJjY8mK5hQXRoG0BokB/tAv1+KNhVVYYzZRXkF5Vzqqic7FNFHMor5kBeIbsOn+atjQ7+vc55k2KX0CDO7dmRi3pFMCq5MyFB2utXLc9Kod8AJIpIPJANXAdcb+XFjTFHROSQiPQyxmQAo4EdjU6rVCOcLinnw62HeX9rDt9k5VFZZegcEsgFiRGc27Mjw+LD6RYebLnn7eMjhAb5ExrkT2w49IsJ+5/jVVWGrONnWL8vj3V7T/DV7lze3ZxNgK8PIxI6csXAKMb36UqbAN/muFzlQebMmcNDDz2EMYbp06cTEBDARRddRHJyMmlpaUydOtUl71NvoTfGVIjITGAFzumVLxlj0kVkWvXx+SLSBUgDQoEqEZkLpBhjCoBZwKsiEgBkAbe4JLlS9dh44CSvrT/I8m2HKS6vJL5TW6aO7MH4vl3oFx3WbEMqPj5CQucQEjqHcMOw7lRVGTYfOsnH24/w0fYj3PbGd9wfmM7EgVFcP7QbfaPD6n9R5XXy8vIQEYKDg/nPf/7D1VdfzcSJE/nFL37BDTfcwBNPPNFyhR7AGLMcWF7rufk1vj+Cc0inrnO3AKmNj6iUdRWVVaxIP8rC1VlsPniKdoF+XDkoimtSYxkU296W8XIfH2FI93CGdA/nvkt7s35fHm+mHWLpJgevrT/I8B7h/PaCHlzcqzM+Pjqe31ps2bKFlBTnTHWHw0G/fv0A8PV1/qUXFBTE0aNHiYyMbPJ76RIIyitUVFbxzkYHox//khmvbSKvsIwHJ/Vh/X2jeeiq/gzu1sEtPhQVEYb36Mjj1w5k/X1juO/SZA6cKOLWf6cx7smv+HDrYaqqdC6CN9m2bRsjRoz44fGmTZsYNWoUeXl5tG/fHoCYmBgcDgcAVVVVAHTo0IGCggKXZNAlEJRHM8bwwdbDPPHZbrJyC+kTFcr8G4dwSUokvm7eOw5r48+UkT25ZUQ8y7cd5pmVmcx4bRPJXUK4Y2wvxvTu7Ba/nFTT9OnTh71791JZWYmvry933HEHjz32GH5+fnz88ccAXHXVVcycOZMPP/yQiRMnApCdne2yqeZa6JXH2nLoFA++n86mg6foFRnC/BsHM65PF48rjv6+PkwaGM3l/aN4/7scnvp8D79dnMaIhI788bIUencNtTuiV3jg/XR25Limh/y9lKhQ/jyxz0+28fHxoU+fPqSnp7Nnzx66devG4MGDMcbw3HPPAdC2bVsWLVr0wzlnzpwhNDSUwMBAl+TUQq88zokzpfx9+U6WbsqmU7tA/vXz/vx8SIzb9+Dr4+sjXDkomsv6d+W19Qd54rPdXPb010we2o3fj08mrI1OzfRUw4cPZ82aNTz33HM/9OJFhBtuuIGioiKCg4P/p31OTg533XWXy95fC73yGMYYlm7K5m8f7uBMaQXTLuzJjIt7et3cdH9fH24+L45JA6N48rM9LF63n092HOWBK/owoa/n/cXiLurreTen4cOH86tf/YoZM2YQHR39w/MXXHBBne2TkpJc+v5a6JVHyDlVzN3vbOXrPccZ0r0DD13Vj6TIELtjNav2wQH85Yo+/HxwDPcs3cr0Vzcxpnck/7iqL51DguyOpxogOTmZwMBA7r77blveX2fdKLdmjOG9LdmMe/IrNh44yV8n9eGtqed6fZGvqV9MGO/NGMF9lybz9Z5cxj/5NSvSj9gdSzXAU089xUMPPUTbtm1teX8t9MptFZSUM+v1zcxZsoWkyBA+mnMBvzw3rlXONffz9WHKyJ58MOt8uoYFMfU/G/n9299RVFZhdzT1E/bu3UtycjLFxcXcfPPNtuXQoRvllrZn5zP91U1knyrmrnG9mHZhT4//sNUVEiNDeHf6CJ76fDfPrdrL5oOneO6GwSS2or9wPEnPnj3ZtWuX3TG0R6/cizGGV745wFXPr6W8soo3pw5nxsUJWuRrCPDz4a5xybxy6zBOFpVxxbNrWLrJYXcs5ca00Cu3UVpRyd3vbOWP/93OuT068uHsCxjSPdzuWG5rREInPpx9Af1iwrj9ze/4y7J0Kiqr7I6l3JAO3Si3cOx0Cb97ZRMbD5xk9qgE5o5JapVj8Q0VGRrEa78ZxkMf7eLF1fvYffQ0864fTIe2AXZHU25Ee/TKdjtyCpj07Bp25BQw7/rB3D62lxb5BvDz9eFPl6fwyNX9Sdt/kknz1pB57LTdsdyGOdtOMR6qMdejhV7Z6svduVwzfy0Ab//uXC7r39XmRJ7rmtRYXp8ynKKyCn7+/DrWZ52wO5LtgoKCOHHihNcUe2MMJ06cICioYfdRiDv+B0hNTTVpaWl2x1DN7M0Nh7j33W0kRYaw6Ffn0CVMbwJyhUN5Rdy86FscecU8eu0ArhgQZXck25SXl+NwOCgpKbE7issEBQURExODv///3hEuIhuNMXUuCa9j9KrFGWN4btVeHlmRwcikCOZdP8jrljGwU2x4MEt/dx6/XZzG7Nc3c/x0Kb8+P97uWLbw9/cnPr51XntNloZuRGS8iGSISKaI/GjPVxFJFpF1IlIqInfWcdxXRDaLyAeuCK08lzGGfyzfySMrMrhqUDQv3pyqRb4ZtA8O4D+3DmNcn0ge/GAHT36222uGL1TD1VvoRcQXmAdMAFKAySKSUqtZHjAbePQsLzMH2NmEnMoLVFYZ7nlnGy98vY+bz+3Oo9cMwN9XPyZqLkH+vsy7fjBXD4nhyc/28OAHO3RTk1bKyk/ZUCDTGJNljCkDlgCTajYwxhwzxmwAymufLCIxwGXAQhfkVR6qorKK297Ywhtph5g9KoG/XNFHZ9a0AD9fH/718/78ekQ8i9bs5w//3abFvhWyMkYfDRyq8dgBDGvAezwJ/B74yXu0RWQKMAVw2a4qyj1UVFYx940tfLD1ML8f34vpFyXYHalV8fER/nR5b4IDfHn2i0yMgX/8rJ/+om1FrBT6uv41WOoSiMjlwDFjzEYRuein2hpjFgALwDnrxsrrK/dXXlnF3CVb+HDbYe6ZkMy0C3vaHalVEhHuGJuEj8DTKzOpMoaHr+qvxb6VsFLoHUBsjccxQI7F1x8BXCEilwJBQKiIvGKMubFhMZUnqqwy3PaGs8jfd2kyU0ZqkbeTiHD72F6ICE99vgcfER66qp9uZNIKWCn0G4BEEYkHsoHrgOutvLgx5l7gXoDqHv2dWuRbh6oqwz3vbOWDrc6evBZ593HbJUlUGcMzKzNpE+DL/ZenaLH3cvUWemNMhYjMBFYAvsBLxph0EZlWfXy+iHQB0oBQoEpE5gIpxhjX7sSrPIIxhgfeT+etjQ5mj07U4Ro3dPslSRSWVvLSmn20C/TjjrG97I6kmpGlG6aMMcuB5bWem1/j+yM4h3R+6jVWAasanFB5nMc+2c2/1x3gN+fHc9uYRLvjqDqIOD+gLSqr4JmVmbQL9GOq/kL2WnpnrHKpRWv28ewXmVx3Tix/uKy3Dgm4MRHh7z/rx5nSCh76aBcd2wVy9ZCf7K8pD6WFXrnMsu9yePCDHYxNieRvV/bVIu8BfH2Ex64dwKmicu5+Zyvhbf0ZlRxpdyzlYnpbonKJNZnHuePNLZzTPZynJw/CT+949RiBfr7M/+UQUrqGMv1V554AyrvoT6Nqsowjp5n2n4306NSOF25OJcjf1+5IqoHaBfqx6JZziAwN4reL0zhwotDuSMqFtNCrJjlWUMIti74lONCXRbecQ1gbXaDMU3VqF8jLtwylyhhuWbSBk4VldkdSLqKFXjVaUVkFt/47jVPF5bx48zlEtW9jdyTVRPGd2vLCTak4ThYz9ZWNlFZU2h1JuYAWetUoVVWGOUu2kJ6Tz7PXD6JvdJjdkZSLnBMXziPX9OfbfXnc+842Xd7YC+isG9Uoj32awac7jvLniSk6S8MLTRoYzYETRTz+6W6SuoToTW8eTgu9arD3tmQz74u9TB4ay6/Oi7M7jmoms0YlsPvoaf758S4SO7djdG/9he6pdOhGNciWQ6e46+2tDI0P54ErdK68NxMRHrl6AH2jwpizZAu7j562O5JqJC30yrJjp0uY+p80OocE8vwNgwnw038+3q5NgC8LbhpCmwBffrs4jfyiH+0tpDyA/qQqS8orq5j56mbyi8tZ8MtUOrYLtDuSaiFdw9ow/8bB5JwqZu4bm3WHKg+khV5Z8vcPd/Lt/jz++fP+pESF2h1HtbAh3cO5f2IfvsjI5cnP99gdRzWQFnpVr3c3O3h57X5uPT+eSQOj7Y6jbHLjsG5cPSSGpz/fw6c7jtodRzWAFnr1k3YdKeDepdsY3iOceyck2x1H2UhE+NuVfekbHcrtb27RZRI8iBZ6dVanS8qZ/somQoP8eWbyYF2oTBHk78vzNwxBgOmvbqKkXO+c9QSWfnJFZLyIZIhIpojcU8fxZBFZJyKlInJnjedjReQLEdkpIukiMseV4VXzMcZwz9Jt7D9RyDOTBxERoh++KqfY8GAev3Yg6TkF/PWDHXbHURbUW+hFxBeYB0wAUoDJIpJSq1keMBt4tNbzFcAdxpjewHBgRh3nKje0eN0BPtx6mDvH9WJYj452x1FuZkxKJFMv7MGr6w/y3pZsu+Ooeljp0Q8FMo0xWcaYMmAJMKlmA2PMMWPMBqC81vOHjTGbqr8/DewE9NM8N7fNkc/fPtzBqOTOTNNNvdVZ3DW2F0Pjwrl36Taycs/YHUf9BCuFPho4VOOxg0YUaxGJAwYB689yfIqIpIlIWm5ubkNfXrnI6ZJyZr6+iU7tAnnsmgH4+Oidr6pufr4+PDV5IIF+Psx8bbOudOnGrBT6un7SG3THhIi0A94B5hpjCupqY4xZYIxJNcakRkRENOTllYsYY/jjf7dzKK+Ip64bRIe2AXZHUm6ua1gbHrl6ADsOF/DQ8l12x1FnYaXQO4DYGo9jgByrbyAi/jiL/KvGmKUNi6da0tsbHby3JYe5Y5IYGh9udxzlIcakRHLLiDheXrtf59e7KSuFfgOQKCLxIhIAXAcss/Li4lzx6kVgpzHm8cbHVM0tK/cM97+XzvAe4cy4OMHuOMrD3DMhmT5Rodz19nccyS+xO46qpd5Cb4ypAGYCK3B+mPqmMSZdRKaJyDQAEekiIg7gduCPIuIQkVBgBPBLYJSIbKn+urTZrkY1SnllFXPf2EKAnw9P/GIgvjourxoo0M+XZyYPorS8ijvf+k7Xw3EzltajN8YsB5bXem5+je+P4BzSqW01dY/xKzfy5Ge72erI5/kbBtM1TLcDVI3TI6Idf7o8hfve3cZLa/bxmwt62B1JVdNbHVu59VkneG7VXq5NjWFCv652x1EebvLQWC5JieRfH2ewI6fOeRfKBlroW7GCknJuf/M7uoUH8+eJfeyOo7yAiPDwVf0IC/Zn7hubdYkEN6GFvhV7YNkODucX88QvBtI2UHeVVK7RsV0gj14zgN1Hz/DYJxl2x1FooW+1Pt5+hHc2OZhxcQKDu3WwO47yMhcmRXDDsG4sXL2Pb7JO2B2n1dNC3wodP1PKH97dRp+oUGaNSrQ7jvJS913am27hwdz51necKa2wO06rpoW+lTHGcO/SbZwureCJXwzUfV9Vs2kb6Mdj1wwg+1Qxf/9QV7m0k/6UtzJLN2Xz6Y6j3DW2F0mRIXbHUV4uNS6cqSN78vq3h/gi45jdcVotLfStyNGCEh54P53U7h349fnxdsdRrcRtlySS2Lkd976zjYKS8vpPUC6nhb6VMMZw39JtlFZU8cg1A/TuV9ViAv18efSaAeSeKeVvulGJLbTQtxLvbs7m813HuGtcL+I7tbU7jmplBsS2Z+rIHryZ5tAhHBtooW8FjhWU8JdlziGbW0bokI2yx5wxOoRjFy30Xu77NeZ1yEbZ7fshnGOnS3Tt+hamhd7LfbT9CJ/sOMrtlyTpkI2y3YDY9tx6fjyvf3uQdXv1RqqWooXei50sLOP+97bTLzqMW3WWjXITt1/Si27hwdy7dKuuhdNCtNB7sb9+uINTReX88+f98fPV/9XKPbQJ8OXhq/qx/0QRT3y22+44rYKln34RGS8iGSKSKSL31HE8WUTWiUipiNzZkHNV8/hydy5LN2Uz7cKepESF2h1Hqf9xXkInfpEaywtfZbHNkW93HK9Xb6EXEV9gHjABSAEmi0hKrWZ5wGzg0Uacq1ysqKyCP7y7jR4RbZk5SrcFVO7pvst607FdIPe+u5WKyiq743g1Kz36oUCmMSbLGFMGLAEm1WxgjDlmjNkA1J4zVe+5yvWe+mwPjpPF/ONn/Qjy97U7jlJ1Cmvjz58nprA9u4CX1+63O45Xs1Loo4FDNR47qp+zoinnqkZIz8ln4ep9XHdOLMN7dLQ7jlI/6bJ+Xbm4VwSPf7qb7FPFdsfxWlYKfV0Tr63u/Gv5XBGZIiJpIpKWm5tr8eVVTZVVzpUpOwT7c++E3nbHUapeIsJfr+yLMfCn/27HGN1UvDlYKfQOILbG4xggx+LrWz7XGLPAGJNqjEmNiIiw+PKqpsXr9rPVkc/9E/sQFuxvdxylLInpEMwdY5NYuesYH20/Ynccr2Sl0G8AEkUkXkQCgOuAZRZfvynnqgY4kl/CY5/sZmRSBBP76ybfyrP86rw4+kSF8sD76bpJSTOot9AbYyqAmcAKYCfwpjEmXUSmicg0ABHpIiIO4HbgjyLiEJHQs53bXBfTmv31gx2UVVbx10l9ENFlDpRn8fP14W9X9uXY6VIe/0Tn1ruapR2hjTHLgeW1nptf4/sjOIdlLJ2rXGtVxjE+3HaYOy5JontHXeZAeaZB3Tpw/dBuvLx2H1cNjqZvdJjdkbyG3i7p4UrKK7n/vXR6RLRlyoU97I6jVJP8flwy4W0D+ON/t1NVpR/MuooWeg/33BeZHMwr4m+T+hLop3PmlWcLC/bnD5f1ZsuhU7y+4aDdcbyGFnoPtv94IfO/zGLSwCjOS+hkdxylXOLKgdEMiw/nkRUZ5BWW2R3HK2ih91DGGP7yfjoBfj784VKdM6+8x/dz60+XVPDICl233hW00HuoT3YcZVVGLrddkkTn0CC74yjlUkmRIfx6RBxLNhxi88GTdsfxeFroPVBxWSUPvr+D5C4h3Hxud7vjKNUs5oxJonNIIPe/l06lfjDbJFroPdC8LzLJPlXMg5P66jrzymu1C/Tjvkt7sy07n9e/1Q9mm0KrhIc5cKKQBV9lceXAKIbGh9sdR6lmdcWAKIb3COfRTzI4VaQfzDaWFnoP89cPduDvK9yrH8CqVkBE+MsVfThdUsFjesdso2mh9yBfZBzjs53HmDU6kUj9AFa1EsldQvnl8O68uv4AO3IK7I7jkbTQe4iyiioefH8H8Z3acsuIOLvjKNWibhuTRPvgAP6yLF2XMm4ELfQe4qU1+9h3vJD7J6boHbCq1QkL9ueucb34dn8ey76zukq6+p4Weg9w7HQJz3y+h9HJnbm4V2e74yhli2tTY+kXHcbDH+2iqEyXMm4ILfQe4JGPMyirrOKPl+u+6qr18vUR/jwxhcP5Jcz/MsvuOB5FC72b2+o4xVsbHfx6RDzxnXQJYtW6pcaFM3FAFP/35V7dY7YBtNC7MWMMD7y/g07tApg5KsHuOEq5hXsmJCMCDy3faXcUj2Gp0IvIeBHJEJFMEbmnjuMiIk9XH98qIoNrHLtNRNJFZLuIvC4iOi/QomXf5bDxwEl+Py6ZkCDdA1YpgOj2bZh2YU8+2HqYb/fl2R3HI9Rb6EXEF5gHTABSgMkiUnuweAKQWP01BXi++txoYDaQaozpC/ji3DdW1aO4rJKHP9pF3+hQrh5S5+ZdSrVaU0f2JCosiAc/SNcNSiyw0qMfCmQaY7KMMWXAEmBSrTaTgMXG6RugvYh8v0O1H9BGRPyAYEDnRlnwwtdZHM4v4U+XpeDjo3vAKlVTmwBf7p6QzPbsApZuzrY7jtuzUuijgUM1Hjuqn6u3jTEmG3gUOAgcBvKNMZ/U9SYiMkVE0kQkLTc312p+r3S0oITnV+1lfJ8uDOvR0e44SrmlKwZEMTC2PY+s0OmW9bFS6OvqTtb+W6nONiLSAWdvPx6IAtqKyI11vYkxZoExJtUYkxoREWEhlvd6dEUGlVWGey9NtjuKUm5LRPjT5b05WlCq0y3rYaXQO4DYGo9j+PHwy9najAH2GWNyjTHlwFLgvMbH9X7bs/N5e5ODX42Io3tHnU6p1E8Z0j2cy/t3ZcFXe8nR6ZZnZaXQbwASRSReRAJwfpi6rFabZcBN1bNvhuMcojmMc8hmuIgEi4gAowGdE3UWxhj+9uEOOgTrdEqlrLpnQjJVBh5ZkWF3FLdVb6E3xlQAM4EVOIv0m8aYdBGZJiLTqpstB7KATOAFYHr1ueuBt4FNwLbq91vg6ovwFp/tPMY3WXnMHZNIqE6nVMqSmA7B3Hp+PO9uzmabI9/uOG5J3HEluNTUVJOWlmZ3jBZVXlnFuCe/AmDF3JH4685RSll2uqScix5ZRULndiyZMhznAELrIiIbjTGpdR3TauImlnx7kKzcQu6b0FuLvFINFBLkz9wxiazfl8dnO4/ZHcftaEVxAwUl5Tzx2R6G9whndG9dnVKpxrhuaDd6RrTloeU7Ka+ssjuOW9FC7waeX7WXvMIy/nhZSqv8k1MpV/D39eHeCb3JOl6om4nXooXeZtmninlx9T5+NiiavtFhdsdRyqON7t2Z4T3CefKzPZwuKbc7jtvQQm+zx6s3PL5zXC+bkyjl+USE+y7tTV5hGf+nN1H9QAu9jXbkFLB0s4NbRsQR3b6N3XGU8gr9Y9pzxYAoFq7O4kh+id1x3IIWehs9/PEuwtr4M/0ivTlKKVe6a1wvKqsMT3y62+4obkELvU2+3pPLV7tzmXlxAmFt9OYopVwpNjyYm86N462Nh8g4ctruOLbTQm+DqirDQ8t3ERvehl+e293uOEp5pZkXJ9A20I9/frzL7ii200Jvg2Xf5bDjcAF3ju1FoJ+v3XGU8kod2gYw4+IEVu46xjdZJ+yOYyst9C2stKKSRz/JoE9UKBP7R9kdRymv9qvz4ugSGsTDH+3CHZd7aSla6FvYq98cxHGymHsmJOvOUUo1syB/X26/JIkth06xIv2I3XFso4W+BRWUlPPMyj2cn9CJCxJb9+YqSrWUqwZHk9i5Hf/6OIOKVro0ghb6FvTCV1mcLCrn7vG6c5RSLcXP14ffj08m63ghb6Y57I5jCy30LeRYQQkLv97H5f270i9GlzpQqiWN6d2Z1O4deOKz3a1yf1kt9C3kmZWZlFdWcedYXepAqZYmItw9IZnc06W8vHa/3XFanKVCLyLjRSRDRDJF5J46jouIPF19fKuIDK5xrL2IvC0iu0Rkp4ic68oL8AQHTjhX07tuaCxxnXQfWKXscE5cOKOTOzN/1V7yi1rXgmf1FnoR8QXmAROAFGCyiKTUajYBSKz+mgI8X+PYU8DHxphkYACtcM/Yxz/djZ+vMHtUot1RlGrV7hzXi9OlFTz/5V67o7QoKz36oUCmMSbLGFMGLAEm1WozCVhsnL4B2otIVxEJBUYCLwIYY8qMMadcF9/9pefk896WHH49Ip7OoUF2x1GqVevdNZQrB0azaM2+VrXgmZVCHw0cqvHYUf2clTY9gFxgkYhsFpGFIlLn2IWITBGRNBFJy83NtXwB7u7RFRmEtfFn6oU97Y6ilAJuG5NElTE8vXKP3VFajJVCX9ddPbVvMTtbGz9gMPC8MWYQUAj8aIwfwBizwBiTaoxJjYjwjjnm3+7L44uMXH53UU9duEwpN9GtYzDXD+3GGxsOsf94od1xWoSVQu8AYms8jgFyLLZxAA5jzPrq59/GWfi9njGGR1bsonNIIDefG2d3HKVUDTNGJRDg68PjrWQZYyuFfgOQKCLxIhIAXAcsq9VmGXBT9eyb4UC+MeawMeYIcEhEvp9TOBrY4arw7mzV7lw27D/J7NGJtAnQhcuUciedQ4K4ZUScc4HBnAK74zS7egu9MaYCmAmswDlj5k1jTLqITBORadXNlgNZQCbwAjC9xkvMAl4Vka3AQOAfrovvnqqqDI98nEG38GCuTY2t/wSlVIubOrInoUF+PPZJht1Rmp2flUbGmOU4i3nN5+bX+N4AM85y7hYgtfERPc/y7YfZcbiAJ34xgAA/vSdNKXcUFuycJPHIigw2HshjSPdwuyM1G61CLlZRWcXjn+wmKbIdVwyoPTlJKeVObhkRR6d2Afzr4wyvXsZYC72LLd2UTdbxQu4Y2wtfXYZYKbcWHODHzIsTWL8vj9WZx+2O02y00LtQaUUlT32+hwExYYxNibQ7jlLKgsnDuhHdvg2PrvDeXr0Wehda8u0hsk8Vc8fYXohob14pTxDo58vs0Ql858jn0x1H7Y7TLLTQu0hxWSXPfpHJ0PhwLkjsZHccpVQD/HxwDPGd2vL4p7upqvK+Xr0WehdZvG4/uadLuWuc9uaV8jR+vj7MHZPIriOn+WDbYbvjuJwWehc4XVLO/C/3cmFSBOfEee8ULaW82cT+USR3CeGJT3d73ZaDWuhd4KXV+zlZVM4dY5PsjqKUaiQfH+H2S5LYd7yQpZuz7Y7jUlrom+hUURkLv85ibEok/WPa2x1HKdUEl6RE0j8mjKc/30NZhff06rXQN9ELX2dxpqyC27U3r5THE3H26h0ni3kz7VD9J3gILfRNcOJMKYvW7Oeyfl1J7hJqdxyllAtcmBTBkO4deHZlJiXllXbHcQkt9E0w/8u9lJRXMneM9uaV8hYiwh1jkzhSUMJr6w/aHccltNA30rGCEhavO8CVg6JJ6NzO7jhKKRc6r2cnzu3RkedW7aWorMLuOE2mhb6Rnlu1l4oqw5zRuuG3Ut7ojrFJHD9Tyn/WHbA7SpNpoW+Ew/nFvLb+INcMiaF7xzq3wFVKebjUuHBGJkUw/8u9nCn17F69FvpGmPdFJgbDjIsT7I6ilGpGt1+SxMmicv69dr/dUZrEUqEXkfEikiEimSLyo829q7cQfLr6+FYRGVzruK+IbBaRD1wV3C6Ok0W8seEQ16bGEhsebHccpVQzGhjbntHJnVnwVRYFJeV2x2m0egu9iPgC84AJQAowWURSajWbACRWf00Bnq91fA7ObQg93rMrMxGEmaO0N69Ua3DbJUnkF5ezaPV+u6M0mpUe/VAg0xiTZYwpA5YAk2q1mQQsNk7fAO1FpCuAiMQAlwELXZjbFgdPFPHWRgfXD+tG17A2dsdRSrWAvtHO/SUWrs4iv8gze/VWCn00UPMWMUf1c1bbPAn8HvjJ+4lFZIqIpIlIWm5uroVYLe/plXvw8xF+d1FPu6MopVrQbZckcbqkghdXZ9kdpVGsFPq61tytvWBznW1E5HLgmDFmY31vYoxZYIxJNcakRkREWIjVsvYfL+TdzdncMKw7kaFBdsdRSrWg3l1DmdC3Cy+t2c+pojK74zSYlULvAGJrPI4Bciy2GQFcISL7cQ75jBKRVxqd1kZPr9yDv68w7aIedkdRStlg7pgkCssqWPj1PrujNJiVQr8BSBSReBEJAK4DltVqswy4qXr2zXAg3xhz2BhzrzEmxhgTV33eSmPMja68gJaQlXuG/27O5sZh3ekcor15pVqjXl1CuLRfVxat2cfJQs/q1ddb6I0xFcBMYAXOmTNvGmPSRWSaiEyrbrYcyAIygReA6c2U1xbPrMwkwM+HqRfq2LxSrdnc0YkUlVfywteeNVbvZ6WRMWY5zmJe87n5Nb43wIx6XmMVsKrBCW22N/cM723J5jcX9CAiJNDuOEopGyVGhnB5/yj+vXY/v7mgB+FtA+yOZIneGVuPpz/fQ6CfL1NG6ti8UgrmjE6gqLySBV95Tq9eC/1PyDx2hmXf5XDTed3p1E5780opSOgcwhUDoli8bj8nzpTaHccSLfQ/4ZmVe2jj78uUC7Q3r5T6/2aNSqS4vJIXPGQGjhb6s/ihN39uHB21N6+UqiGhczuP6tVroT+L73vzv70g3u4oSik3NGtUIiXllSzwgBk4WujroL15pVR9fujVrz3g9r16LfR10N68UsqKWaMTKa1w/xk4Wuhr0d68UsqqnhHtmDggisXr3LtXr4W+lmdW7iHIT3vzSilrZo1KpKTCvWfgaKGvIfPYGd6vnjevvXmllBUJndsxsb9zBk6em66Bo4W+hmdXVt8Fq/PmlVINMHt0QvW8evccq9dCX21v7vdj89qbV0o1TELn/78Gjjv26rXQV3t2ZSaBfr78Vte0UUo1wuxRzl79Qjfs1Wuhx7ne/HtbsrlxeDdd00Yp1SiJkSFc1q8r/1673+3Wq9dCD8z7Yi8Bfj5MGanrzSulGm/WqEQKyyp5cbV7zcBp9YX+wIlC/rvFuResrjevlGoK5y5UXXh5rXvtLWup0IvIeBHJEJFMEbmnjuMiIk9XH98qIoOrn48VkS9EZKeIpIvIHFdfQFM9uzITPx9h6oU6Nq+UarrZoxM5U1rBS2v22x3lB/UWehHxBeYBE4AUYLKIpNRqNgFIrP6aAjxf/XwFcIcxpjcwHJhRx7m2OXiiiKWbs7l+WDfdC1Yp5RLJXUIZ36cLi9bsI7+43O44gLUe/VAg0xiTZYwpA5YAk2q1mQQsNk7fAO1FpGv1BuGbAIwxp3HuORvtwvxN8tyqTHx9hGm6F6xSyoVmj07kdEkFi9a4x1i9lUIfDRyq8djBj4t1vW1EJA4YBKyv601EZIqIpIlIWm5uroVYTeM4WcTbGx1MPieWyFDtzSulXCclKpSxKZG8tHofBSX29+qtFHqp4znTkDYi0g54B5hrjCmo602MMQuMManGmNSIiAgLsZrmuVV78RFh2kXam1dKud7s0YkUlFSweO1+u6NYKvQOILbG4xggx2obEfHHWeRfNcYsbXxU18k5VcxbaYe49pwYuoa1sTuOUsoL9Y0OY0zvzixcvY8zpRW2ZrFS6DcAiSISLyIBwHXAslptlgE3Vc++GQ7kG2MOi4gALwI7jTGPuzR5E8z/ci8Av7soweYkSilvNmtUIqeKylm8br+tOeot9MaYCmAmsALnh6lvGmPSRWSaiEyrbrYcyAIygReA6dXPjwB+CYwSkS3VX5e6+iIa4kh+CUu+PcTVQ2KIbq+9eaVU8xkQ256LekWw8Ot9FNrYq/ez0sgYsxxnMa/53Pwa3xtgRh3nrabu8XvbzP9yL1XGMF1780qpFjB7dCJXPbeWV745wFSbZvi1qjtjjxWU8Pq3B/nZoGhiw4PtjqOUagUGd+vABYmdeOHrLIrLKm3J0KoK/YKvsqioMswcpb15pVTLmTM6keNnynjt24O2vH+rKfTHz5TyyvoDTBoYRfeObe2Oo5RqRVLjwjmvZ0fmf7mXkvKW79W3mkK/8Ot9lFVUMeNi7c0rpVre7NGJ5J4u5Y0Nh+pv7GKtotDnFZaxeN1+Jg6IomdEO7vjKKVaoeE9OjI0PpznV+2ltKJle/WtotC/tHofxeWVzNTevFLKRrNHJXKkoIS30hwt+r5eX+jzi8p5ee1+Lu3blcTIELvjKKVasREJHRncrT3Pr9pLWUVVi72v1xf6l9Y4bz+eNVp780ope4kIs0cnkn2qmHc3t1yv3qsLfUFJOYvW7GNcn0iSu4TaHUcppbgwKYIBMWE8+0Um5ZUt06v36kK/eO1+CkoqmDUq0e4oSikFOHv1s0YlciivmPe21F4fsnl4baE/U1rBwtX7GJ3cmb7RYXbHUUqpH4zu3ZmUrqHM+yKTyqraq767ntcW+le+OcCponJmjdbevFLKvXw/Vr/veCEfbG3+Xr1XFvqisgpe+CqLkUkRDIxtb3ccpZT6kbEpkSR3CeGZlZlUNXOv3isL/WvrD3KisIw5OtNGKeWmfHyEmaMSyDx2ho+2H2ne92rWV7dBSXkl//dVFiMSOjKke7jdcZRS6qwm9O1Kz4i2PLNyT7P26r2u0C/59iC5p0t1po1Syu35+jhn4Ow6cppPdhxttvexVOhFZLyIZIhIpojcU8dxEZGnq49vFZHBVs91pdKKSuZ/mcXQ+HCG9+jYnG+llFIucXn/rsR1DOaZlXtw7uHkevUWehHxBeYBE4AUYLKIpNRqNgFIrP6aAjzfgHNd5q00B0cKSpitvXmllIfw8/Vh+sUJpOcUsHLXsWZ5Dys9+qFApjEmyxhTBiwBJtVqMwlYbJy+AdqLSFeL57pEWUUVz6/ay+Bu7RmRoL15pZTn+NmgaGI6tOHplZnN0qu3smdsNFBzAWUHMMxCm2iL5wIgIlNw/jVAt27dLMT6X5VVhmtTYxnSvQMibrVNrVJK/SR/Xx/mjE5kqyOf0ooqgvx9Xfr6Vgp9XVWz9q+cs7Wxcq7zSWMWAAsAUlNTG/wrrU2AL3PG6JCNUsozXZMayzWpsc3y2lYKvQOo+e4xQO1buc7WJsDCuUoppZqRlTH6DUCiiMSLSABwHbCsVptlwE3Vs2+GA/nGmMMWz1VKKdWM6u3RG2MqRGQmsALwBV4yxqSLyLTq4/OB5cClQCZQBNzyU+c2y5UopZSqkzTXvM2mSE1NNWlpaXbHUEopjyEiG40xqXUd87o7Y5VSSv0vLfRKKeXltNArpZSX00KvlFJezi0/jBWRXOBAI0/vBBx3YRxPoNfs/Vrb9YJec0N1N8ZE1HXALQt9U4hI2tk+efZWes3er7VdL+g1u5IO3SillJfTQq+UUl7OGwv9ArsD2ECv2fu1tusFvWaX8boxeqWUUv/LG3v0SimlatBCr5RSXs4jC31TNiv3VBau+Ybqa90qImtFZIAdOV3J6sbyInKOiFSKyNUtma85WLlmEblIRLaISLqIfNnSGV3Nwr/tMBF5X0S+q77mW+zI6Soi8pKIHBOR7Wc57vr6ZYzxqC+cyx3vBXrg3NjkOyClVptLgY9w7nA1HFhvd+4WuObzgA7V309oDddco91KnEtlX2137hb4/9we2AF0q37c2e7cLXDN9wH/rP4+AsgDAuzO3oRrHgkMBraf5bjL65cn9uibslm5p6r3mo0xa40xJ6sffoNzNy9PZnVj+VnAO8CxlgzXTKxc8/XAUmPMQQBjjKdft5VrNkCIODeDboez0Fe0bEzXMcZ8hfMazsbl9csTC/3ZNiJvaBtP0tDruRVnj8CT1XvNIhIN/AyY34K5mpOV/89JQAcRWSUiG0XkphZL1zysXPOzQG+c25BuA+YYY6paJp4tXF6/rOwZ626aslm5p7J8PSJyMc5Cf36zJmp+Vq75SeBuY0yls7Pn8axcsx8wBBgNtAHWicg3xpjdzR2umVi55nHAFmAU0BP4VES+NsYUNHM2u7i8fnlioW/KZuWeytL1iEh/YCEwwRhzooWyNRcr15wKLKku8p2AS0Wkwhjz3xZJ6HpW/20fN8YUAoUi8hUwAPDUQm/lmm8BHjbOAexMEdkHJAPftkzEFufy+uWJQzdN2azcU9V7zSLSDVgK/NKDe3c11XvNxph4Y0ycMSYOeBuY7sFFHqz9234PuEBE/EQkGBgG7GzhnK5k5ZoP4vwLBhGJBHoBWS2asmW5vH55XI/eNGGzck9l8ZrvBzoCz1X3cCuMB6/8Z/GavYqVazbG7BSRj4GtQBWw0BhT5zQ9T2Dx//NfgZdFZBvOYY27jTEeu3yxiLwOXAR0EhEH8GfAH5qvfukSCEop5eU8cehGKaVUA2ihV0opL6eFXimlvJwWeqWU8nJa6JVSystpoVdKKS+nhV4ppbzc/wPpy7q226MYQwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 这里可以设不同的y0[1]的值，你会发现解的形状几乎不变，只是改变了整体的系数\n",
    "x = np.linspace(0,1,100)\n",
    "sol = solve_ivp(f2,t_span=(x[0],x[-1]),y0=[0,0.5],args=(np.pi,),dense_output=True)\n",
    "show_sol(x,sol)\n",
    "\n",
    "\n",
    "# 看看不同本征值得到的解的变化\n",
    "for i in np.linspace(1,np.pi,5):\n",
    "    sol = solve_ivp(f2,t_span=(x[0],x[-1]),y0=[0,0.5],args=(i,),dense_output=True)\n",
    "    show_sol(x,sol)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 2])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.array([[0,1],[0,0],[2,2]])[:,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      converged: True\n",
      "           flag: 'converged'\n",
      " function_calls: 8\n",
      "     iterations: 7\n",
      "           root: 21.983720375612737\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0,1,100)\n",
    "sol = ode_bvp(f2,bc=np.array([[0,0],[0.1,0]]),x=x,p0=4.5)#\n",
    "show_sol(x,sol)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      converged: True\n",
      "           flag: 'converged'\n",
      " function_calls: 10\n",
      "     iterations: 9\n",
      "           root: 2.1206142289893704\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(-6,6,1000)\n",
    "sol = ode_bvp(f1,bc=np.array([[0,0.001],[0,-0.001]]),x=x,p0=1.5)\n",
    "\n",
    "show_sol(x,sol)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.267079685670284e-09\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def bc(ya,yb,p):\n",
    "    return np.array([ya[0],yb[0],ya[1]-p[0]])\n",
    "x = np.linspace(0,1,100)\n",
    "y = np.zeros((2,x.size))\n",
    "y[0,1]=1\n",
    "y[0,-2]=-1\n",
    "sol = solve_bvp(f2,bc,x,y,p=[6,])\n",
    "print(sol.p[0])\n",
    "show_sol(x,sol)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 练习十"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 采用分子动力学的方式求解二维及三维的三体系统\n",
    "* 采用分子动力学的方式求解100个原子的系统"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def verlet(rk,gk,vk,t,force,**kwargs):\n",
    "    rk1 = rk + t * vk + t**2 / 2 * gk \n",
    "    gk1 = force(rk1,**kwargs)\n",
    "    vk1 = vk + (gk + gk1) * t /2\n",
    "    return rk1,gk1,vk1 \n",
    "\n",
    "def gravity2(r,kappa):\n",
    "    normal_r = np.sqrt(np.sum(r**2))\n",
    "    return -kappa * r / normal_r**3\n",
    "\n",
    "def gravity_n(r,kappa):\n",
    "    normal_r = np.sqrt(np.sum(r**2))\n",
    "    n = r.shape[1]\n",
    "    g = np.zeros(r.shape)\n",
    "    for i in range(n):\n",
    "        for j in range(n):\n",
    "            if j !=i :\n",
    "                g[:,i] = g[:,i] -kappa[i,j] * (r[:,i] - r[:,j]) / normal_r**3\n",
    "    return g \n",
    "\n",
    "\n",
    "def md(r0,v0,t,t_range,force,**kwargs):\n",
    "    m = len(t_range)\n",
    "    new_shape=list(r0.shape)\n",
    "    new_shape.append(m)\n",
    "    \n",
    "    r = np.zeros(new_shape)\n",
    "    v = np.zeros(new_shape)\n",
    "    g = np.zeros(new_shape)\n",
    "    g0 = force(r0,**kwargs)\n",
    "\n",
    "    r[...,0] = r0\n",
    "    v[...,0] = v0\n",
    "    g[...,0] = g0\n",
    "    for i in range(m-1):\n",
    "        r[...,i+1],g[...,i+1],v[...,i+1] = verlet(r[...,i],g[...,i],v[...,i],t,force,**kwargs)\n",
    "    return r,g,v\n",
    "\n",
    "def show(r):\n",
    "    for i in range(r.shape[1]):\n",
    "        plt.plot(r[0,i,:],r[1,i,:],label=\"$r^{(%i)}$\"%i)\n",
    "    plt.legend()\n",
    "    plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "r0 = np.array([1.97,0]).reshape(-1,1)\n",
    "v0 = np.array([0,0.816]).reshape(-1,1)\n",
    "kappa = np.ones((1,1)) * 39.5\n",
    "r,g,v = md(r0,v0,0.0001,np.arange(10000),force=gravity2,kappa=kappa)\n",
    "show(r)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "r0 = np.array([[1.97,0],[0,1.97]])\n",
    "v0 = np.array([[0,0.816],[0.816,0]])\n",
    "kappa = np.ones((2,2)) * 39.5\n",
    "r,g,v = md(r0,v0,0.0001,np.arange(100000),force=gravity2,kappa=kappa)\n",
    "show(r)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 练习十一"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 蒙特卡罗模拟 \n",
    "1. 采用蒙特卡洛方法计算积分\n",
    "$$\n",
    "S=\\int_{-\\infty}^{\\infty} e^{-r^2 / 2}(x y z)^2 d \\mathbf{r}\n",
    "$$\n",
    "并对比蒙特卡洛方法和精确值。试试看蒙特卡洛方法的误差是否随着点的数目的增加而减少？\n",
    "\n",
    "2. 计算上一步采样数据的自关联函数。画出自关联函数，并确定相隔多少点可以忽略数据间的关联"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[False  True  True  True  True  True  True  True False False False False]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(array([1, 2, 3, 4, 5, 6, 7]),)"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = np.arange(12)\n",
    "print(np.logical_and(a>0,a<8))\n",
    "np.where(np.logical_and(a>0,a<8))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(np.array((np.array([]),)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "simulation 1!\n",
      "start thermalize!\n",
      "accepted ratio :  0.407\n",
      "start measurement!\n",
      "accepted ratio :  0.4116\n",
      "0.9560710855822696 0.14181225485555976\n",
      "21.68515944186469\n",
      "simulation 2!\n",
      "start thermalize!\n",
      "accepted ratio :  0.4203\n",
      "start measurement!\n",
      "accepted ratio :  0.4105\n",
      "0.32924026571083426 0.0020433216918388612\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "class mc:\n",
    "    def __init__(self,n,S,h,step=20,boundary=None) -> None:\n",
    "        self.r0  = np.random.random(size=n)\n",
    "        self.accepts = 0\n",
    "        self.e = [S(self.r0)] \n",
    "        self.S = S\n",
    "        self.h = h\n",
    "        self.step = step\n",
    "        self.r=[]\n",
    "        self.y=None\n",
    "        self.boundary = boundary\n",
    "\n",
    "    def update(self):\n",
    "        boundary = self.boundary\n",
    "        self.r1 = self.r0 + (np.random.random(size=len(self.r0))  - 0.5)*2 * self.h\n",
    "        if boundary is not None:\n",
    "            index = np.nonzero(np.logical_or(self.r1<boundary[0],self.r1>boundary[1]))\n",
    "            if len(index[0]) == len(self.r0):\n",
    "                return \n",
    "            else:\n",
    "                self.r1[index] = self.r0[index]\n",
    "        e = self.S(self.r1)\n",
    "        ratio = e / self.e[-1]\n",
    "\n",
    "        if ratio > np.random.random():\n",
    "            self.e.append(e) \n",
    "            self.r0 = self.r1\n",
    "            self.accepts = self.accepts + 1\n",
    "\n",
    "    def thermalize(self,n,show=False):\n",
    "        print(\"start thermalize!\")\n",
    "        for i in range(n):\n",
    "            self.update()\n",
    "            if show:\n",
    "                print(self.r0)\n",
    "        print(\"accepted ratio : \", self.accepts / n)\n",
    "    \n",
    "    def meas(self,f,n):\n",
    "        print(\"start measurement!\")\n",
    "        self.accepts = 0\n",
    "        for i in range(n):\n",
    "            self.update()\n",
    "            if i%self.step ==0:\n",
    "                self.r.append(self.r0)\n",
    "        print(\"accepted ratio : \", self.accepts / n)\n",
    "        self.r = np.array(self.r).transpose()\n",
    "        self.y  = f(self.r)\n",
    "        print(self.y.mean(),np.std(self.y)/(len(self.y)-1)**0.5)\n",
    "    \n",
    "    def show(self):\n",
    "        plt.hist(self.r[0,:],bins=50)\n",
    "        plt.show()\n",
    "        plt.hist(self.y,bins=50)\n",
    "        plt.show()\n",
    "\n",
    "\n",
    "        \n",
    "\n",
    "def S1(r):\n",
    "    return np.exp(- np.sum(r**2) / 2)\n",
    "def f1(r):\n",
    "    return (r[0,:] * r[1,:] * r[2,:])**2 \n",
    "\n",
    "def S2(r):\n",
    "    return (np.exp(r**2) - 1)\n",
    "def f2(r):\n",
    "    return 0.46265167 * r[0,:]**2 / (np.exp(r[0,:]**2) - 1)\n",
    "\n",
    "print(\"simulation 1!\")\n",
    "n1 = 10000\n",
    "n2 = 10000\n",
    "intf = mc(3,S1,h=1.8)\n",
    "intf.thermalize(n1)\n",
    "intf.meas(f1,n2)\n",
    "print(1/intf.r.mean())\n",
    "\n",
    "print(\"simulation 2!\")\n",
    "intf = mc(1,S2,h=0.5,boundary=(0,1))\n",
    "intf.thermalize(n1)\n",
    "intf.meas(f2,n2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 课程小论文"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. 研究氦原子的基态性质\n",
    "2. 研究三维三体问题\n",
    "3. 研究通电螺线管的磁场及磁力线分布"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.9.12 ('base')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "36b5677e7909a0b3d34004c01c225c0a9ffb16d3aacb819783bafe2786ef65fe"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
